// 1.服务端 server.js
const ws = require("nodejs-websocket")
// socket服务端口
const port  = 8888
// 创建一个玩家进入标识
const enter_user = 0
// 创建一个玩家离开的标识
const live_user = 1
// 创建一个发送消息的标识
const send_user = 2
// 计数用户进入房间
var personNumber = 0
// 创建一个serve服务
const server = ws.createServer(function (connect) {
    console.log('有用户进来了')
    // 附加connect对象 作为当前用户信息
    personNumber++
    connect.userName = `玩家${personNumber}`
    // 开始广播信息 让所有玩家知道你大驾光临！
    broadcast({
        type:enter_user,
        userName:connect.userName,
        content:'',
        time:new Date().toLocaleTimeString()
    })
    // 处理用户发送的信息 text
    connect.on("text", data=>{
        /* 
           处理用户信息 然后返回 单一处理不含广播
           connect.send(data)
        */
    // 开始广播你的龙言
       broadcast({
        type:send_user,
        userName:connect.userName,
        content:data,
        time:new Date().toLocaleTimeString()
      })
    })
    // 连接断开 会触发
    connect.on("close", ()=>{
    //  对于你的离开做一次广播，这可是VIP待遇
        personNumber--
        broadcast({
            type:live_user,
            userName:`${connect.userName}已离开房间`,
            content:'',
            time:new Date().toLocaleTimeString()
          })
    })
    // 处理error事件
    connect.on("error", ()=>{
        console.log('处理error事件,连接异常！')
    })
})
// 处理消息广播
function broadcast(msg) {
    // websocket 只能接受字符串及buffer类型 需要转换一下
    server.connections.forEach(function (conn) {
        conn.sendText(JSON.stringify(msg))
    })
}
// 监听端口
server.listen(port,()=>{
    console.log('服务',port)
})